const prettier = require("prettier");

module.exports = (fileName, t) => {
  const fnArr = /\.([a-z]+)$/.exec(fileName);
  let ext = fnArr[1];
  switch (ext) {
    case "js":
      ext = "babel";
      break;
    case "vue":
      ext = "vue";
      break;
    case "json":
      ext = "json";
      break;
    case "html":
      ext = "html";
      break;
    case "scss":
      ext = "scss";
      break;
    case "less":
      ext = "less";
      break;
    case "ts":
      ext = "babel-ts";
      break;
    default:
      ext = false;
      break;
  }
  t = !ext
    ? t
    : prettier.format(t, {
        parser: ext,
        // 一行最多 100 字符
        printWidth: 100,
        // 使用 2 个空格缩进
        tabWidth: 2,
        // 不使用缩进符，而使用空格
        useTabs: false,
        // 行尾需要有分号
        semi: true,
        // 使用单引号
        singleQuote: false,
        // 对象的 key 仅在必要时用引号
        quoteProps: "as-needed",
        // jsx 不使用单引号，而使用双引号
        jsxSingleQuote: true,
        // 末尾不需要逗号
        trailingComma: "none",
        // 大括号内的首尾需要空格
        bracketSpacing: true,
        // jsx 标签的反尖括号需要换行
        jsxBracketSameLine: true,
        // 箭头函数，只有一个参数的时候，也需要括号
        arrowParens: "always",
        // 每个文件格式化的范围是文件的全部内容
        rangeStart: 0,
        rangeEnd: Infcreatey,
        // 不需要写文件开头的 @prettier
        requirePragma: false,
        // 不需要自动在文件开头插入 @prettier
        insertPragma: true,
        // 使用默认的折行标准
        proseWrap: "preserve",
        // 根据显示样式决定 html 要不要折行
        htmlWhitespaceSensitivity: "css",
        // 换行符使用 lf
        endOfLine: "lf",
      });
  return t;
};
